/*************************************************
 * 描述： Excel 工具类
 *
 * File：excelutils.h
 * Author：zhangzhiming@mozihealthcare.cn
 * Date：25-8-30
 * Update：
 * ************************************************/

#ifndef EXCELUTILS_H
#define EXCELUTILS_H
#include <QList>
#include <QString>
#include <common/export.h>
#include <memory>

class CXI_COMMON_EXPORT ExcelUtils
{
public:
	/**
	 * 单例获取excel工具实例
	 * @return
	 */
	static ExcelUtils& instance();

	/**
	 * 删除拷贝构造，确保单例
	 */
	ExcelUtils(ExcelUtils const&) = delete;

	/**
	 * 删除移动构造，确保单例
	 */
	ExcelUtils(ExcelUtils&&) = delete;

	/**
	 * 删除赋值符号重载，确保单例
	 */
	ExcelUtils& operator=(ExcelUtils const&) = delete;
	ExcelUtils& operator=(ExcelUtils const&&) = delete;

	/**
	 * 析构
	 */
	~ExcelUtils();

	/**
	* 导出excel函数
	 * @param list 字符串数组
	 * @param path 导出路径
	 * @param sheetName 导出sheet表名称
	 * @return 导出状态（true 成功 / false 失败）
	 */
	bool exportXlsx(const QList<QStringList>& list,
					const QString& path,
					const QString& sheetName) const;

	/**
	 * 导出excel函数
	 * @param jsonStr json串
	 * @param path 导出路径
	 * @param sheetName 导出sheet表名称
	 * @return 导出状态（true 成功 / false 失败）
	 */
	bool exportXlsx(const QString& jsonStr,
					const QString& path,
					const QString& sheetName) const;

	/**
	 * 导入excel
	 * @param path
	 * @param sheetName
	 * @return
	 */
	QList<QStringList> fromXlsx(const QString& path, const QString& sheetName) const;

private:
	ExcelUtils();
	friend class ExcelUtilsPrivate;
	std::unique_ptr<ExcelUtilsPrivate> d;
};


#endif//EXCELUTILS_H
